package la.renzhen.rtpt.admin.source;

import lombok.NonNull;

import java.util.Arrays;
import java.util.List;

/**
 * 配置提供者服务<p>
 *
 * @author <a href="mailto:zhouhaichao@2008.sina.com">haiker</a>
 * @version 11/05/2018 4:22 PM
 */
public interface CenterConfigurationSource {

    default List<String> environments() {
        return Arrays.asList("master", "gray", "test", "dev");
    }

    /**
     * 获取最终配置<p>
     *
     * @param environment 所属环境
     * @param prefix      所有配置前缀
     * @return 配置KV列表
     */
    List<ConfigElement> loadAll(@NonNull String environment,@NonNull String prefix);

    /**
     * @param environment 所属环境
     * @param key         获取内容的KEY
     * @return 配置项
     */
    ConfigElement get(@NonNull String environment,@NonNull String key);


    /**
     * 设置配置项
     *
     * @param item 配置项
     */
    void set(@NonNull ConfigElement item);

    /**
     * 删除键
     *
     * @param key 删除键
     * @param environment 删除所在环境
     */
    void del(@NonNull String environment,@NonNull String key);

}